package com.api.customization.fenbeitong;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.engine.common.util.ParamUtil;
import com.yunzhou.utils.DBTools;
import com.yunzhou.utils.DateTools;
import com.yunzhou.utils.HttpClientUtils;
import com.yunzhou.utils.LogTool;
import weaver.conn.RecordSet;
import weaver.conn.RecordSetTrans;

import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

/**
 * @Date 2022-09-28
 * @Version 1.0
 * @Description TODO 分贝通出差申请相关订单回传
 **/
@Path("fenbeitong2Order")
public class OrderResultApi {
    private LogTool logTool = new LogTool("/log/fenbeitong/OrderResultApi", false);

    private final HttpClientUtils client = new HttpClientUtils();
    private final DateTools dateTools = new DateTools();
    private final DBTools dbTools = new DBTools();

    @POST
    @Path("/setOrderInfo")
    @Produces(MediaType.APPLICATION_JSON)
    public Map<String, Object> setOrderInfo(@Context HttpServletRequest request,
                                            @Context HttpServletResponse response) {
        Map<String, Object> msgMap = new HashMap<>();
        msgMap.put("status", 0);
        msgMap.put("msg", "");
        Map<String, Object> requestParams = ParamUtil.request2Map(request);
        logTool.writeLog("订单回传参数...");
        logTool.writeLog(JSONObject.toJSONString(requestParams));
        JSONObject allParams = new JSONObject(requestParams).getJSONObject("data");
        logTool.writeLog(JSONObject.toJSONString(allParams));
        if (!allParams.containsKey("orderInfos")) {
          msgMap.put("status", 1);
          msgMap.put("msg", "缺少参数节点orderInfos 请检查参数是否完整！");
          return msgMap;
        }
        if (!allParams.containsKey("id")) {
          msgMap.put("status", 1);
          msgMap.put("msg", "缺少参数id 请检查参数是否完整！");
          return msgMap;
        }
        String id = allParams.getString("id");
        if (id.isEmpty()) {
          msgMap.put("status", 1);
          msgMap.put("msg", "参数id为空 请检查参数是否完整！");
          return msgMap;
        }
        String mainTable = dbTools.getBillTableName(id);
        if (mainTable.isEmpty()) {
          msgMap.put("status", 1);
          msgMap.put("msg", "根据id:" + id + " 查询OA出差表单为空");
          return msgMap;
        }
        // 获取对应的mainid
        RecordSet rs = new RecordSet();
        rs.execute("select id,requestid from " + mainTable + " where requestid=" + id);
        rs.next();
        String mainid = rs.getString("id");
        // 订单结果集
        JSONObject orderInfos = allParams.getJSONObject("orderInfos");
        if (!orderInfos.containsKey("order_info")) {
          msgMap.put("status", 1);
          msgMap.put("msg", "缺少参数节点order_info 请检查参数是否完整！");
          return msgMap;
        }
        if (!orderInfos.containsKey("user_info")) {
          msgMap.put("status", 1);
          msgMap.put("msg", "缺少参数节点user_info 请检查参数是否完整！");
          return msgMap;
        }
        if (!orderInfos.containsKey("price_info")) {
          msgMap.put("status", 1);
          msgMap.put("msg", "缺少参数节点price_info 请检查参数是否完整！");
          return msgMap;
        }
        if (!orderInfos.containsKey("passenger_info")) {
          msgMap.put("status", 1);
          msgMap.put("msg", "缺少参数节点passenger_info 请检查参数是否完整！");
          return msgMap;
        }
        JSONObject order_info = orderInfos.getJSONObject("order_info");// 订单信息
        JSONObject user_info = orderInfos.getJSONObject("user_info");// 下单人信息
        String order_id = order_info.getString("order_id");// 订单id
        // 场景类型 7:国内机票;40:国际机票；3:用车;15:火车;11:酒店;
        String order_category_type = order_info.getString("order_category_type");
        // 提取订单状态
        String status_name = order_info.getString("status_name");
        // 订单方向
        String order_op_type_name = order_info.getString("order_op_type_name");
        // 下单人姓名
        String name = user_info.getString("name");
        // 下单人手机
        String phone = user_info.getString("phone");
        // 下单人工号
        String employee_number = user_info.getString("employee_number");
        RecordSetTrans rst = new RecordSetTrans();
        rst.setAutoCommit(false);
        if (order_category_type.equals("7") || order_category_type.equals("40")) {
          // 获取机票订单信息
          JSONObject price_info = orderInfos.getJSONObject("price_info");// 订单金额信息
          JSONObject passenger_info = orderInfos.getJSONObject("passenger_info");// 乘客信息
          JSONObject ticket_info = orderInfos.getJSONObject("ticket_info");// 订单行程
          JSONObject go_segment = ticket_info.getJSONObject("go_segment");// 去程
          JSONObject back_segment = ticket_info.getJSONObject("back_segment");// 返程

          // 乘客姓名和联系电话
          String passenger_name = passenger_info.getString("name");
          String passenger_phone = passenger_info.getString("phone");
          // 去程舱位等级
          String go_cabin_msg = go_segment.getString("cabin_msg");
          // 去程航空公司名称
          String go_airline_name = go_segment.getString("airline_name");
          // 去程航班号
          String go_flight_no = go_segment.getString("flight_no");

          // 返程舱位等级
          String back_cabin_msg = "";
          // 返程航空公司名称
          String back_airline_name = "";
          // 返程航班号
          String back_flight_no = "";
          if (back_segment != null) {
            back_cabin_msg = back_segment.getString("cabin_msg");
            back_airline_name = back_segment.getString("airline_name");
            back_flight_no = back_segment.getString("flight_no");
          }
          // 写入明细4 主表id 订单id 订单状态 订单方向 下单人 手机 乘客姓名 联系电话 去程航空公司 去程航班号 返程航空公司 返程航班号
          // mainid,order_id,status_name,order_type,name,phone,passenger_name,passenger_phone,go_airline_name,go_flight_no,back_airline_name,back_flight_no
          Object[] objects = {
              mainid, order_id, status_name, order_op_type_name, name, phone, passenger_name, passenger_phone,
              go_airline_name, go_flight_no, back_airline_name, back_flight_no
          };
          String sql = "insert into " + mainTable
              + "_dt4 (mainid,order_id,status_name,order_op_type_name,name,phone,passenger_name,passenger_phone," +
              " go_airline_name,go_flight_no,back_airline_name,back_flight_no)"
              + " values(?,?,?,?,?,?,?,?,?,?,?,?)";
          boolean result = false;
          try {
            result = rst.executeUpdate(sql, objects);
            if (!result) {
              msgMap.put("status", 1);
              msgMap.put("msg", "机票订单结果回传更新执行SQL失败");
              return msgMap;
            }
          } catch (Exception e) {
            rst.rollback();
            e.printStackTrace();
            msgMap.put("status", 1);
            msgMap.put("msg", "机票订单结果回传更新执行SQL异常 " + e.getMessage());
            return msgMap;
          }
          rst.commit();
          return msgMap;
        } else if (order_category_type.equals("15")) {
          // 获取火车订单信息
          JSONObject price_info = orderInfos.getJSONObject("price_info");// 订单金额信息
          JSONObject train_info = orderInfos.getJSONObject("train_info");// 火车信息
          JSONObject passenger_info = orderInfos.getJSONObject("passenger_info");// 乘客信息

          // 乘客姓名和联系电话
          String passenger_name = passenger_info.getString("name");
          String passenger_phone = passenger_info.getString("phone");

          // 出发时间
          String start_time = train_info.getString("start_time");
          // 到达时间
          String end_time = train_info.getString("end_time");
          // 出发地
          String from_station = train_info.getString("from_station");
          // 目的地
          String to_station = train_info.getString("to_station");
          // 座位类型
          String seat_type = train_info.getString("seat_type");
          // 车票号
          String train_no = train_info.getString("train_no");
          // 座位号
          String seat_location = train_info.getString("seat_location");

          // 写入明细5 主表id 订单id 订单状态 订单方向 下单人 手机 乘客姓名 联系电话 出发地 出发时间 目的地 到达时间 座位类型 车票号 座位号
          Object[] objects = {
              mainid, order_id, status_name, order_op_type_name, name, phone, passenger_name, passenger_phone,
              from_station, start_time, to_station, end_time, seat_type, train_no, seat_location
          };
          String sql = "insert into " + mainTable
              + "_dt5 (mainid,order_id,status_name,order_op_type_name,name,phone,passenger_name,passenger_phone,\n" +
              " from_station,start_time,to_station,end_time,seat_type,train_no,seat_location)"
              + " values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
          boolean result = false;
          try {
            result = rst.executeUpdate(sql, objects);
            if (!result) {
              msgMap.put("status", 1);
              msgMap.put("msg", "火车票订单结果回传更新执行SQL失败");
              return msgMap;
            }
          } catch (Exception e) {
            rst.rollback();
            e.printStackTrace();
            msgMap.put("status", 1);
            msgMap.put("msg", "火车票订单结果回传更新执行SQL异常 " + e.getMessage());
            return msgMap;
          }
          rst.commit();
          return msgMap;
        } else if (order_category_type.equals("3")) {
          // 获取用车订单信息
          JSONObject price_info = orderInfos.getJSONObject("price_info");// 订单金额信息
          JSONObject passenger_info = orderInfos.getJSONObject("passenger_info");// 乘客信息

          // 乘客姓名和联系电话
          String passenger_name = passenger_info.getString("name");
          String passenger_phone = passenger_info.getString("phone");

          // 出发地
          String departure_name = order_info.getString("departure_name");
          // 出发时间
          String departure_time = order_info.getString("departure_time");
          // 达到地
          String arrival_name = order_info.getString("arrival_name");
          // 到达时间
          String arrival_time = order_info.getString("arrival_time");

          // 写入明细6 主表id 订单id 订单状态 订单方向 下单人 手机 乘客姓名 联系电话 出发地 出发时间 目的地 到达时间
          Object[] objects = {
              mainid, order_id, status_name, order_op_type_name, name, phone, passenger_name, passenger_phone,
              departure_name, departure_time, arrival_name, arrival_time
          };
          String sql = "insert into " + mainTable
              + "_dt6 (mainid,order_id,status_name,order_op_type_name,name,phone,passenger_name,passenger_phone,\n" +
              " departure_name,departure_time,arrival_name,arrival_time)"
              + " values(?,?,?,?,?,?,?,?,?,?,?,?)";
          boolean result = false;
          try {
            result = rst.executeUpdate(sql, objects);
            if (!result) {
              msgMap.put("status", 1);
              msgMap.put("msg", "用车订单结果回传更新执行SQL失败");
              return msgMap;
            }
          } catch (Exception e) {
            rst.rollback();
            e.printStackTrace();
            msgMap.put("status", 1);
            msgMap.put("msg", "用车订单结果回传更新执行SQL异常 " + e.getMessage());
            return msgMap;
          }
          rst.commit();
          return msgMap;
        } else if (order_category_type.equals("11")) {
          // 获取酒店订单信息
          JSONObject price_info = orderInfos.getJSONObject("price_info");// 订单金额信息
          JSONObject guest_info = orderInfos.getJSONObject("guest_info");// 入住人信息
          JSONObject hotel_info = orderInfos.getJSONObject("hotel_info");// 酒店信息

          // 入住人姓名和联系电话
          String guest_name = guest_info.getString("name");
          String guest_phone = guest_info.getString("phone");

          // 酒店
          String hotel_name = hotel_info.getString("hotel_name");
          // 房间类型
          String room_type = hotel_info.getString("room_type");
          // 入住时间
          String checkin_date = hotel_info.getString("arrival_name");
          // 离开时间
          String checkout_date = hotel_info.getString("arrival_time");

          // 写入明细7 主表id 订单id 订单状态 订单方向 下单人 手机 入住人姓名 联系电话 酒店 房间类型 入住时间 离开时间
          Object[] objects = {
              mainid, order_id, status_name, order_op_type_name, name, phone, guest_name, guest_phone,
              hotel_name, room_type, checkin_date, checkout_date
          };
          String sql = "insert into " + mainTable
              + "_dt7 (mainid,order_id,status_name,order_op_type_name,name,phone,passenger_name,passenger_phone,\n" +
              " hotel_name,room_type,checkin_date,checkout_date)"
              + " values(?,?,?,?,?,?,?,?,?,?,?,?)";
          boolean result = false;
          try {
            result = rst.executeUpdate(sql, objects);
            if (!result) {
              msgMap.put("status", 1);
              msgMap.put("msg", "酒店订单结果回传更新执行SQL失败");
              return msgMap;
            }
          } catch (Exception e) {
            rst.rollback();
            e.printStackTrace();
            msgMap.put("status", 1);
            msgMap.put("msg", "酒店订单结果回传更新执行SQL异常 " + e.getMessage());
            return msgMap;
          }
          rst.commit();
          return msgMap;
      }
      msgMap.put("status", 1);
      msgMap.put("msg", "订单类型不属于机票/用车/火车/酒店");
      return msgMap;
    }

    @POST
    @Path("/cancel")
    @Produces(MediaType.APPLICATION_JSON)
    public Map<String, Object> cancel(@Context HttpServletRequest request,
        @Context HttpServletResponse response) {
        Map<String, Object> msgMap = new HashMap<>();
        msgMap.put("status", 0);
        msgMap.put("msg", "");
        JSONObject allParams = null;
        ServletInputStream inputStream = null;
        try {
            request.setCharacterEncoding("UTF-8");
            inputStream = request.getInputStream();
            StringBuilder content = new StringBuilder();
            byte[] b = new byte[1024];
            int lens = -1;
            while ((lens = inputStream.read(b)) > 0) {
                content.append(new String(b, 0, lens,"UTF-8"));
            }
            String strcont = content.toString();// 内容
            allParams = JSONObject.parseObject(strcont);
            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
            msgMap.put("status", 1);
            msgMap.put("msg", "转化订单参数异常 " + e.getMessage());
            try {
                inputStream.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
            return msgMap;
        }

        logTool.writeLog("作废出差单参数...");
        logTool.writeLog(JSONObject.toJSONString(allParams));
        if (!allParams.containsKey("id")) {
          msgMap.put("status", 1);
          msgMap.put("msg", "缺少参数id 请检查参数是否完整！");
          return msgMap;
        }
        String id = allParams.get("id").toString();
        if (id.isEmpty()) {
          msgMap.put("status", 1);
          msgMap.put("msg", "参数id为空 请检查参数是否完整！");
          return msgMap;
        }
        String mainTable = dbTools.getBillTableName(id);
        if (mainTable.isEmpty()) {
          msgMap.put("status", 1);
          msgMap.put("msg", "根据id:" + id + " 查询OA出差表单为空");
          return msgMap;
        }
        RecordSetTrans rst = new RecordSetTrans();
        rst.setAutoCommit(false);
        try {
          rst.executeSql("update " + mainTable + " set status_name=1 where requestid=" + id);
        } catch (Exception e) {
          e.printStackTrace();
          rst.rollback();
          msgMap.put("status", 1);
          msgMap.put("msg", "根据id:" + id + " 更新出差申请单状态为作废SQL执行失败");
        }
        rst.commit();
        return msgMap;
    }

    @POST
    @Path("/setOrderInfoV2")
    @Produces(MediaType.APPLICATION_JSON)
    public Map<String, Object> setOrderInfoV2(@Context HttpServletRequest request,
        @Context HttpServletResponse response) {
        Map<String, Object> msgMap = new HashMap<>();
        msgMap.put("status", 0);
        msgMap.put("msg", "");
        JSONObject allParams = null;
        ServletInputStream inputStream = null;
        try {
            request.setCharacterEncoding("UTF-8");
            inputStream = request.getInputStream();
            StringBuilder content = new StringBuilder();
            byte[] b = new byte[1024];
            int lens = -1;
            while ((lens = inputStream.read(b)) > 0) {
                content.append(new String(b, 0, lens,"UTF-8"));
            }
            String strcont = content.toString();// 内容
            allParams = JSONObject.parseObject(strcont);
            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
            msgMap.put("status", 1);
            msgMap.put("msg", "转化订单参数异常 " + e.getMessage());
            try {
                inputStream.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
            return msgMap;
        }

        logTool.writeLog("订单回传参数...");
        logTool.writeLog(JSONObject.toJSONString(allParams));
        // 从订单参数中固定获取third_info
        try {
            if (!allParams.containsKey("third_info")) {
                msgMap.put("status", 1);
                msgMap.put("msg", "缺少参数节点third_info 请检查参数是否完整！");
                return msgMap;
            }
            JSONObject _third_info = allParams.getJSONObject("third_info");

            String id = _third_info.getString("apply_id");
            if (!_third_info.containsKey("apply_id") || id.isEmpty()) {
                msgMap.put("status", 1);
                msgMap.put("msg", "参数apply_id为空或不存在该参数 请检查参数是否完整！");
                return msgMap;
            }
            String mainTable = dbTools.getBillTableName(id);
            if (mainTable.isEmpty()) {
                msgMap.put("status", 1);
                msgMap.put("msg", "根据id:" + id + " 查询OA出差表单为空");
                return msgMap;
            }
            // 获取对应的mainid
            RecordSet rs = new RecordSet();
            rs.execute("select id,requestid from " + mainTable + " where requestid=" + id);
            rs.next();
            String mainid = rs.getString("id");

            // 订单结果集
            if (!allParams.containsKey("order_info")) {
                msgMap.put("status", 1);
                msgMap.put("msg", "缺少参数节点order_info 请检查参数是否完整！");
                return msgMap;
            }
            if (!allParams.containsKey("user_info")) {
                msgMap.put("status", 1);
                msgMap.put("msg", "缺少参数节点user_info 请检查参数是否完整！");
                return msgMap;
            }
            if (!allParams.containsKey("price_info")) {
                msgMap.put("status", 1);
                msgMap.put("msg", "缺少参数节点price_info 请检查参数是否完整！");
                return msgMap;
            }

            JSONObject order_info = allParams.getJSONObject("order_info");// 订单信息
            JSONObject user_info = allParams.getJSONObject("user_info");// 下单人信息
            String order_id = order_info.getString("order_id");// 订单id
            // 场景类型 7:国内机票;40:国际机票；3:用车;15:火车;11:酒店;
            String order_category_type = order_info.getString("order_category_type");
            // 提取订单状态
            String status_name = order_info.getString("status_name");
          // 订单方向
          String order_op_type_name = order_info.getString("order_op_type_name");
          // 下单人姓名
          String name = user_info.getString("name");
          // 下单人手机
          String phone = user_info.getString("phone");
          // 下单人工号
          String employee_number = user_info.getString("employee_number");
          RecordSetTrans rst = new RecordSetTrans();
          rst.setAutoCommit(false);
          if (order_category_type.equals("7") || order_category_type.equals("40")) {
            // 获取机票订单信息
            JSONObject price_info = allParams.getJSONObject("price_info");// 订单金额信息
            JSONObject passenger_info = allParams.getJSONObject("passenger_info");// 乘客信息
            JSONObject ticket_info = allParams.getJSONObject("ticket_info");// 订单行程
            JSONObject go_segment = ticket_info.getJSONObject("go_segment");// 去程
            JSONObject back_segment = ticket_info.getJSONObject("back_segment");// 返程

            // 乘客姓名和联系电话
            String passenger_name = passenger_info.getString("name");
            String passenger_phone = passenger_info.getString("phone");
            // 去程舱位等级
            String go_cabin_msg = go_segment.getString("cabin_msg");
            // 去程航空公司名称
            String go_airline_name = go_segment.getString("airline_name");
            // 去程航班号
            String go_flight_no = go_segment.getString("flight_no");
            //新增begin
              //出发城市（去程出发地）
              String go_airline_place = go_segment.getString("starting_city");
              //日期
              String go_airline_cfrq = go_segment.getString("starting_date");
              //时间
              String go_airline_cfsj = go_segment.getString("starting_time");
              //去程出发时间
              String go_airline_gotime = go_airline_cfrq+"-"+go_airline_cfsj;
              //去程目的地
              String go_airline_destination = go_segment.getString("arrived_city");
              //日期
              String go_airline_ddrq = go_segment.getString("arrived_date");
              //时间
              String go_airline_ddsj = go_segment.getString("arrived_time");
              //去程到达时间
              String go_airline_arrivetime = go_airline_ddrq+"-"+go_airline_ddsj;

              //去程舱位等级
              String go_airline_cwdj = go_segment.getString("cabin_msg");
            //新增end
            // 返程舱位等级
            String back_airline_cwdj = "";
            // 返程航空公司名称
            String back_airline_name = "";
            // 返程航班号
            String back_flight_no = "";
            if (back_segment != null) {
                back_airline_cwdj = back_segment.getString("cabin_msg");
              back_airline_name = back_segment.getString("airline_name");
              back_flight_no = back_segment.getString("flight_no");
            }
            // 写入明细4 主表id 订单id 订单状态 订单方向 下单人 手机 乘客姓名 联系电话 去程航空公司 去程航班号 返程航空公司 返程航班号
            // mainid,order_id,status_name,order_type,name,phone,passenger_name,passenger_phone,go_airline_name,go_flight_no,back_airline_name,back_flight_no
            Object[] objects = {
                    mainid, order_id, status_name, order_op_type_name, name, phone, passenger_name, passenger_phone,
                    go_airline_name, go_flight_no, back_airline_name, back_flight_no, go_airline_place, go_airline_gotime,
                    go_airline_destination, go_airline_arrivetime, go_airline_cwdj, back_airline_cwdj
            };
            String sql = "insert into " + mainTable
                    + "_dt4 (mainid,order_id,status_name,order_op_type_name,name,phone,passenger_name,passenger_phone," +
                    " go_airline_name,go_flight_no,back_airline_name,back_flight_no,go_airline_place,go_airline_gotime,go_airline_destination,go_airline_arrivetime,go_airline_cwdj,back_airline_cwdj)"
                    + " values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
            boolean result = false;
            try {
              result = rst.executeUpdate(sql, objects);
              if (!result) {
                msgMap.put("status", 1);
                msgMap.put("msg", "机票订单结果回传更新执行SQL失败");
                return msgMap;
              }
            } catch (Exception e) {
              rst.rollback();
              e.printStackTrace();
              msgMap.put("status", 1);
              msgMap.put("msg", "机票订单结果回传更新执行SQL异常 " + e.getMessage());
              return msgMap;
            }
            rst.commit();
            return msgMap;
          } else if (order_category_type.equals("15")) {
            if (!allParams.containsKey("passenger_info")) {
              msgMap.put("status", 1);
              msgMap.put("msg", "缺少参数节点passenger_info 请检查参数是否完整！");
              return msgMap;
            }
            // 获取火车订单信息
            JSONObject price_info = allParams.getJSONObject("price_info");// 订单金额信息
            JSONObject train_info = allParams.getJSONObject("train_info");// 火车信息
            JSONObject passenger_info = allParams.getJSONObject("passenger_info");// 乘客信息

            // 乘客姓名和联系电话
            String passenger_name = passenger_info.getString("name");
            String passenger_phone = passenger_info.getString("phone");

            // 出发时间
            String start_time = train_info.getString("start_time");
            // 到达时间
            String end_time = train_info.getString("end_time");
            // 出发地
            String from_station = train_info.getString("from_station");
            // 目的地
            String to_station = train_info.getString("to_station");
            // 座位类型
            String seat_type = train_info.getString("seat_type");
            // 车票号
            String train_no = train_info.getString("train_no");
            // 座位号
            String seat_location = train_info.getString("seat_location");

            // 写入明细5 主表id 订单id 订单状态 订单方向 下单人 手机 乘客姓名 联系电话 出发地 出发时间 目的地 到达时间 座位类型 车票号 座位号
            Object[] objects = {
                    mainid, order_id, status_name, order_op_type_name, name, phone, passenger_name, passenger_phone,
                    from_station, start_time, to_station, end_time, seat_type, train_no, seat_location
            };
            String sql = "insert into " + mainTable
                    + "_dt5 (mainid,order_id,status_name,order_op_type_name,name,phone,passenger_name,passenger_phone,\n" +
                    " from_station,start_time,to_station,end_time,seat_type,train_no,seat_location)"
                    + " values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
            boolean result = false;
            try {
              result = rst.executeUpdate(sql, objects);
              if (!result) {
                msgMap.put("status", 1);
                msgMap.put("msg", "火车票订单结果回传更新执行SQL失败");
                return msgMap;
              }
            } catch (Exception e) {
              rst.rollback();
              e.printStackTrace();
              msgMap.put("status", 1);
              msgMap.put("msg", "火车票订单结果回传更新执行SQL异常 " + e.getMessage());
              return msgMap;
            }
            rst.commit();
            return msgMap;
          } else if (order_category_type.equals("3")) {
            // 获取用车订单信息
            JSONObject price_info = allParams.getJSONObject("price_info");// 订单金额信息
            JSONObject passenger_info = allParams.getJSONObject("passenger_info");// 乘客信息

            // 乘客姓名和联系电话
            String passenger_name = passenger_info.getString("name");
            String passenger_phone = passenger_info.getString("phone");

            // 出发地
            String departure_name = order_info.getString("departure_name");
            // 出发时间
            String departure_time = order_info.getString("departure_time");
            // 达到地
            String arrival_name = order_info.getString("arrival_name");
            // 到达时间
            String arrival_time = order_info.getString("arrival_time");

            // 写入明细6 主表id 订单id 订单状态 订单方向 下单人 手机 乘客姓名 联系电话 出发地 出发时间 目的地 到达时间
            Object[] objects = {
                    mainid, order_id, status_name, order_op_type_name, name, phone, passenger_name, passenger_phone,
                    departure_name, departure_time, arrival_name, arrival_time
            };
            String sql = "insert into " + mainTable
                    + "_dt6 (mainid,order_id,status_name,order_op_type_name,name,phone,passenger_name,passenger_phone,\n" +
                    " departure_name,departure_time,arrival_name,arrival_time)"
                    + " values(?,?,?,?,?,?,?,?,?,?,?,?)";
            boolean result = false;
            try {
              result = rst.executeUpdate(sql, objects);
              if (!result) {
                msgMap.put("status", 1);
                msgMap.put("msg", "用车订单结果回传更新执行SQL失败");
                return msgMap;
              }
            } catch (Exception e) {
              rst.rollback();
              e.printStackTrace();
              msgMap.put("status", 1);
              msgMap.put("msg", "用车订单结果回传更新执行SQL异常 " + e.getMessage());
              return msgMap;
            }
            rst.commit();
            return msgMap;
          } else if (order_category_type.equals("11")) {
              // 获取酒店订单信息
              JSONObject price_info = allParams.getJSONObject("price_info");// 订单金额信息
              //JSONObject guest_info = allParams.getJSONObject("guest_info");// 入住人信息
              JSONArray guest_info = allParams.getJSONArray("guest_info");
              JSONObject hotel_info = allParams.getJSONObject("hotel_info");// 酒店信息

              // 入住人姓名和联系电话
              //String guest_name = guest_info.getString("name");
              //String guest_phone = guest_info.getString("phone");
              // 酒店
              String hotel_name = hotel_info.getString("hotel_name");
              // 房间类型
              String room_type = hotel_info.getString("room_type");
              // 入住时间
              String checkin_date = hotel_info.getString("arrival_name");
              // 离开时间
              String checkout_date = hotel_info.getString("arrival_time");

              String sql = "insert into " + mainTable
                      + "_dt7 (mainid,order_id,status_name,order_op_type_name,name,phone,guest_name,guest_phone,\n" +
                      " hotel_name,room_type,checkin_date,checkout_date)"
                      + " values(?,?,?,?,?,?,?,?,?,?,?,?)";
              boolean result = false;
              for(int i=0;i<guest_info.size();i++){
                  String guest_name = guest_info.getJSONObject(i).getString("name");
                  String guest_phone = guest_info.getJSONObject(i).getString("phone");
                  // 写入明细7 主表id 订单id 订单状态 订单方向 下单人 手机 入住人姓名 联系电话 酒店 房间类型 入住时间 离开时间
                  Object[] objects = {
                          mainid, order_id, status_name, order_op_type_name, name, phone, guest_name, guest_phone,
                          hotel_name, room_type, checkin_date, checkout_date
                  };
                  try {
                      result = rst.executeUpdate(sql, objects);
                      if (!result) {
                          msgMap.put("status", 1);
                          msgMap.put("msg", "酒店订单结果回传更新执行SQL失败");
                          return msgMap;
                      }
                  } catch (Exception e) {
                      rst.rollback();
                      e.printStackTrace();
                      msgMap.put("status", 1);
                      msgMap.put("msg", "酒店订单结果回传更新执行SQL异常 " + e.getMessage());
                      return msgMap;
                  }
              }
              rst.commit();
              return msgMap;
          }
            msgMap.put("status", 1);
            msgMap.put("msg", "订单类型不属于机票/用车/火车/酒店");
            return msgMap;
        }catch (Exception e){
            e.printStackTrace();
            msgMap.put("status", 1);
            msgMap.put("msg", "接口出现内部异常 "+e.getMessage());
            return msgMap;
        }
    }
  }
